Page({
  data: {
    formData: {
      oldPassword: '',
      newPassword: '',
      confirmPassword: ''
    },
    showOldPassword: false,
    showNewPassword: false,
    showConfirmPassword: false,
    userId: null // 初始化为null，后续动态获取
  },

  /**
   * 页面加载时：
   * 1. 先获取动态用户ID
   * 2. 再加载原密码（依赖用户ID）
   */
  onLoad() {
    this.getDynamicUserId(); // 第一步：获取动态用户ID
  },

  /**
   * 动态获取用户ID（从本地存储的用户信息中获取）
   * 通常用户登录成功后，后端会返回包含id的用户信息，前端需存储到本地
   */
  getDynamicUserId() {
    // 从本地存储中获取登录后的用户信息（需确保登录时已存储）
    const userInfo = wx.getStorageSync('userInfo');
    
    if (userInfo && userInfo.id) {
      // 若获取到用户ID，更新到data中
      this.setData({
        userId: userInfo.id
      }, () => {
        // 回调：确保userId更新后，再加载原密码
        this.fetchOldPassword();
      });
    } else {
      // 若未获取到用户ID（如未登录或信息丢失），提示重新登录
      wx.showToast({ title: '用户信息缺失，请重新登录', icon: 'none', duration: 2000 });
      // 1秒后跳转到登录页（根据实际登录页路径调整）
      setTimeout(() => {
        wx.navigateTo({ url: '/pages/login/login' });
      }, 1000);
    }
  },

  /**
   * 获取原密码（回显）
   * 依赖动态获取的userId，因此需在getDynamicUserId之后调用
   */
  fetchOldPassword() {
    const { userId } = this.data;
    const token = wx.getStorageSync('token');

    // 双重验证：确保userId和token存在
    if (!token) {
      wx.showToast({ title: '请先登录', icon: 'none' });
      return;
    }
    if (!userId) {
      console.error('未获取到用户ID，无法加载原密码');
      return;
    }

    wx.request({
      url: `http://localhost/dev-api/userr/users/${userId}`, // 使用动态userId
      method: 'GET',
      header: { 'Authorization': `Bearer ${token}` },
      success: (res) => {
        if (res.data.code === 200 && res.data.data) {
          // 回显原密码（接口返回的password字段）
          this.setData({ 'formData.oldPassword': res.data.data.password });
        }
      }
    });
  },

  /**
   * 输入框内容变化
   */
  onInputChange(e) {
    const { field } = e.currentTarget.dataset;
    this.setData({ [`formData.${field}`]: e.detail.value });
  },

  /**
   * 切换密码显示/隐藏
   */
  onTogglePassword(e) {
    const { field } = e.currentTarget.dataset;
    this.setData({ [field]: !this.data[field] });
  },

  /**
   * 提交修改密码（使用动态userId）
   */
  onChangePassword() {
    const { formData, userId } = this.data;

    // 前端验证
    if (!formData.oldPassword.trim()) {
      wx.showToast({ title: '请输入原密码', icon: 'none' });
      return;
    }
    if (!formData.newPassword.trim() || formData.newPassword.length < 6) {
      wx.showToast({ title: '新密码至少6位', icon: 'none' });
      return;
    }
    if (formData.newPassword !== formData.confirmPassword) {
      wx.showToast({ title: '两次密码不一致', icon: 'none' });
      return;
    }
    // 验证动态userId是否存在
    if (!userId) {
      wx.showToast({ title: '用户信息异常，请重试', icon: 'none' });
      return;
    }

    const token = wx.getStorageSync('token');
    if (!token) {
      wx.showToast({ title: '请先登录', icon: 'none' });
      return;
    }

    wx.showLoading({ title: '修改中...' });
    wx.request({
      url: `http://localhost:8080/userr/users`,
      method: 'put',
      header: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      },
      data: {
        id: userId, // 使用动态获取的userId
        password: formData.newPassword // 新密码
      },
      success: (res) => {
        console.log('修改响应：', res.data);
        const { code, msg } = res.data;

        if (code === 200) {
          this.fetchOldPassword(); // 重新获取原密码，验证是否更新
          wx.showToast({ title: '密码已更新', icon: 'success' });
          setTimeout(() => wx.navigateBack(), 1000);
        } else {
          wx.showToast({ title: msg || '修改失败', icon: 'none' });
        }
      },
      fail: (err) => {
        console.error('请求失败：', err);
        wx.showToast({ title: '网络错误', icon: 'none' });
      },
      complete: () => wx.hideLoading()
    });
  }
});